package com.fa7.trabalho.entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "MENSAGEM")
public class Mensagem implements Serializable, Comparable<Mensagem> {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2936516405236386108L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ID", nullable = false)
	private Integer id;
	
	@OneToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "ID_PERFIL")
	private Perfil perfil;
	
	@OneToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "ID_PERFIL_CITADO", nullable = true)
	private Perfil perfilCitado;
	
	@Column(name = "TEXTO", length = 140, nullable = false)
	private String texto;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "CREATED_DATE", nullable = false)
	private Date dataCriacao;

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public Date getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Perfil getPerfilCitado() {
		return perfilCitado;
	}

	public void setPerfilCitado(Perfil perfilCitado) {
		this.perfilCitado = perfilCitado;
	}

	@Override
	public int compareTo(Mensagem arg0) {
		Mensagem mensagem = (Mensagem) arg0;

        if (this.dataCriacao.after(mensagem.getDataCriacao())){
            return -1;
        }

        if (this.dataCriacao.before(mensagem.getDataCriacao())){
            return 1;
        }
        
	    return 0;
	}

}
